home *** CD-ROM | disk | FTP | other *** search
- #define DISABLE_LOCAL_CALLTRACE 1 // Set to 1 to disable Call Traces for this file.
- #define DISABLE_LOCAL_DEBUG 0 // Set to 1 to disable all debugging for this file.
- #include "DebugUtils.h"
-
- #include <ctype.h>
- #include <Errors.h>
- #include <Resources.h>
- #include <string.h>
- #include <TextUtils.h>
- #include "StringUtils.h"
-
-
-
-
-
- // Case insensitive version of strcmp(NoCase).
- int strcmpnc(const char *s1,const char *s2)
- {
- int c1,c2;
-
-
- while(*s1 && *s2)
- {
- c1 = toupper(*s1++);
- c2 = toupper(*s2++);
-
- if (c1 != c2)
- return (c1 > c2) ? 1 : -1;
- }
-
- if (!*s1 && !*s2)
- return 0;
-
- if (!*s1)
- return -1;
-
- if (!*s2)
- return 1;
-
- return 0;
- }
-
-
-
-
-
- // Case insensitive version of strncmp(NoCase).
- int strncmpnc(const char *s1,const char *s2,size_t n)
- {
- int c1,c2;
-
-
- while((n > 0) && *s1 && *s2)
- {
- c1 = toupper(*s1++);
- c2 = toupper(*s2++);
- n--;
-
- if (c1 != c2)
- return (c1 > c2) ? 1 : -1;
- }
-
- if (n == 0)
- return 0;
-
- if (!*s1)
- return -1;
-
- if (!*s2)
- return 1;
-
- return 0;
- }
-
-
-
-
-
- // Pascal version of strcat.
- unsigned char *pstrcat(unsigned char *dst,const unsigned char *src)
- {
- memmove(&dst[1 + dst[0]],&src[1],src[0]);
- dst[0] += src[0];
- return dst;
- }
-
-
-
-
-
- // Pascal version of strcpy.
- unsigned char *pstrcpy(unsigned char *dst,const unsigned char *src)
- {
- memmove(dst,src,1 + src[0]);
- return dst;
- }
-
-
-
-
-
- // Pascal version of strncpy.
- unsigned char *pstrncpy(unsigned char *dst,const unsigned char *src,size_t n)
- {
- unsigned char len = (src[0] < n) ? src[0] : n;
-
-
- memmove(&dst[1],&src[1],len);
- dst[0] = len;
- return dst;
- }
-
-
-
-
-
- // Pascal version of strcmp.
- int pstrcmp(const unsigned char *s1,const unsigned char *s2)
- {
- int index,len = (s1[0] < s2[0]) ? s1[0] : s2[0];
-
-
- for (index = 1;index <= len;index++)
- {
- if (s1[index] > s2[index])
- return 1;
- else if (s1[index] < s2[index])
- return -1;
- }
-
- if (s1[0] > s2[0])
- return 1;
- else if (s1[0] < s2[0])
- return -1;
-
- return 0;
- }
-
-
-
-
-
- // Case insensitive version of pstrcmp(NoCase).
- int pstrcmpnc(const unsigned char *s1,const unsigned char *s2)
- {
- int index,len = (s1[0] < s2[0]) ? s1[0] : s2[0];
- int c1,c2;
-
-
- for (index = 1;index <= len;index++)
- {
- c1 = toupper(s1[index]);
- c2 = toupper(s2[index]);
-
- if (c1 > c2)
- return 1;
- else if (c1 < c2)
- return -1;
- }
-
- if (s1[0] > s2[0])
- return 1;
- else if (s1[0] < s2[0])
- return -1;
-
- return 0;
- }
-
-
-
-
-
- // Convert C to Pascal string.
- unsigned char *ctopstr(unsigned char *dst,const char *src)
- {
- unsigned char len = strlen(src);
-
-
- memmove(&dst[1],src,len);
- dst[0] = len;
- return dst;
- }
-
-
-
-
-
- // Convert Pascal to C string.
- char *ptocstr(char *dst,const unsigned char *src)
- {
- unsigned char len = src[0];
-
-
- memmove(dst,&src[1],len);
- dst[len] = '\0';
- return dst;
- }
-
-
-
-
-
- char *GetCString(char *str,short strID)
- {
- return ptocstr(str,(StringPtr)GetPString((StringPtr)str,strID));
- }
-
-
-
-
-
- StringPtr GetPString(StringPtr str,short strID)
- {
- Handle data;
-
-
- data = Get1Resource('STR ',strID);
- if (data != NULL)
- {
- memcpy(str,*data,(unsigned char)(**data) + 1);
- ReleaseResource(data);
- }
- else
- str[0] = '\0';
-
- return str;
- }
-
-
-
-
-
- char *GetIndCString(char *str,short strListID,short index)
- {
- return ptocstr(str,(StringPtr)GetIndPString((StringPtr)str,strListID,index));
- }
-
-
-
-
-
- StringPtr GetIndPString(StringPtr str,short strListID,short index)
- {
- GetIndString(str,strListID,index);
- return str;
- }
-
-
-
-
-
- char *GetAppNameCString(char *name)
- {
- return ptocstr(name,(StringPtr)GetAppNamePString((StringPtr)name));
- }
-
-
-
-
-
- StringPtr GetAppNamePString(StringPtr name)
- {
- FCBPBRec fpb;
-
-
- fpb.ioCompletion = NULL;
- fpb.ioFCBIndx = 0;
- fpb.ioVRefNum = 0;
- fpb.ioRefNum = CurResFile();
- fpb.ioNamePtr = name;
- PBGetFCBInfoSync(&fpb);
- return name;
- }
-